package paquete1;
import java.util.Vector;
import java.util.Vector;
class Usuario5
{
     static char MAS = 'm';		               
     static char FEM = 'f';

     String nombre;
     int edad;
     String direccion;                     
     char sexo;                     		

     Usuario5( )
     {
        nombre = null;
        edad = 0;
        direccion = null;
        sexo = '\0';	
     }

     Usuario5(String nombre, int edad, String direccion,char sexo)
     {
        this.nombre = nombre;
        this.edad = edad;
        this.direccion = direccion;	
        this.sexo = sexo;			  	 
     }

     Usuario5(Usuario5 usr)
     {
        nombre = usr.getNombre();
        edad = usr.getEdad();
        direccion = usr.getDireccion();		 
        sexo = usr.getSexo();		 		  
     }

     void setNombre(String n)
     {
        nombre = n;
     }

     String getNombre()
     {
        return nombre;
     }

     void setEdad(int e)
     {
        edad = e;
     }

     int getEdad()
     {
        return edad;
     }

     void setDireccion(String d)
     {
        direccion = d;
     }

     String getDireccion()
     {
        return direccion;
     }

     void setSexo(char s)
     {
        sexo = s;
     }

     char getSexo()
     {
        return sexo;
     }

     public String toString()
     {
       return nombre;
     }
}









class ProgUsuario5
{
   static int NUM_USUARIOS = 0;

   static Vector usuarios = new Vector();
   /* La siguiente línea sería obligatoria si
      se omitiera la linea import java.util.Vector; */
//   static java.util.Vector usuarios = new java.util.Vector();

   String nombreObj = null;
	
   ProgUsuario5(String nombre)
   {
     this.nombreObj = nombre;
   }	
	
   static int getNumUsuarios()
   {
     return NUM_USUARIOS;
   }

   static void imprimeUsuario(Usuario5 usr)
   {
     System.out.println("\nNombre: " + usr.nombre );
     System.out.println("Edad: " + usr.getEdad() );
     System.out.println("Sexo: " + usr.getSexo() );
     System.out.println("Direccion: " + usr.getDireccion() );				
   }

   void addUsuario(Usuario5 usr)
   {
     usuarios.addElement(usr);
     System.out.print(usr.toString( )+ " agregado por el "+ this.toString() +",");
     NUM_USUARIOS ++;
   }

   void delUsuario(Usuario5 usr)
   {
     boolean b = usuarios.removeElement(usr);
     if( b == true )
     {
        NUM_USUARIOS--;
        System.out.print(usr.toString( )+ " eliminado por el "+ this.toString() +","); 
     }
     else System.out.println("No se pudo eliminar al usuario.");
   }

   public String toString()
   {
      return nombreObj;
   }

   public static void main(String args[])
   {
    
      ProgUsuario5 obj1 = new ProgUsuario5("objeto1");
      ProgUsuario5 obj2 = new ProgUsuario5("objeto2");		
		
      Usuario5 usr1,usr2,usr3,usr4; 

      usr1 = new Usuario5( ); 
      usr2 = new Usuario5("Usuario B",24,"La direccion A",Usuario5.FEM); 
      usr1 = new Usuario5(usr2);  		
      usr1.setNombre("Usuario A");		
      usr3 = new Usuario5("Usuario C",35,"La direccion C",Usuario5.MAS); 				
      usr4 = new Usuario5("Usuario D",15,"La direccion D",Usuario5.MAS); 		

      obj1.addUsuario(usr1);				
      System.out.println( "\t Total: " +ProgUsuario5.getNumUsuarios() );		
      obj2.addUsuario(usr2);				
      System.out.println( "\t Total: " +obj1.getNumUsuarios() );				
      obj1.addUsuario(usr3);				
      System.out.println( "\t Total: " +ProgUsuario5.NUM_USUARIOS );				
      obj2.addUsuario(usr4);				
      System.out.println( "\t Total: " +getNumUsuarios() +"\n");	
		
      obj2.delUsuario(usr4);
      System.out.println( "\t Total: " +ProgUsuario5.getNumUsuarios() );		
      obj1.delUsuario(usr3);		
      System.out.println( "\t Total: " +obj1.getNumUsuarios() );			
      obj2.delUsuario(usr2);
      System.out.println( "\t Total: " +ProgUsuario5.NUM_USUARIOS );		
      obj1.delUsuario(usr1);
      System.out.println( "\t Total: " +getNumUsuarios() +"\n");					
   }
}
